package com.mm.cme.kotlin_001.level03_object_oriented_program.overload_default_arguments

import com.mm.cme.kotlin_001.utils.Pr
import com.mm.cme.kotlin_001.utils.pd
import com.mm.cme.kotlin_001.utils.pl
import java.util.ArrayList

/**
 * Descriptions：默认参数，通常情况下默认参数可以解决方法重载的问题
 * <p>
 * Author：ChenME
 * Date：2017/7/20
 * Email：ibelieve1210@163.com
 */

class DefaultArgument {

    //针对Overload类，可以对其中两个方法使用默认参数进行优化
    //如果在Java中想调用a()方法该怎么办？在方法前添加@JvmOverloads修饰即可
    @JvmOverloads fun a(arg: Int = 0): Int {
        return arg
    }
}

fun main(args: Array<String>) {
    val defaultArgument = DefaultArgument()
    pl(defaultArgument.a())
    pl(defaultArgument.a(10))


    pd()
    val integerList = ArrayList<Int>()
    integerList.add(1)
    integerList.add(12)
    integerList.add(123)
    integerList.add(1234)
    integerList.add(5)
    integerList.add(12345)

    pl(integerList)

    // 此处解决了Bug类中Java的bug
    integerList.remove(5)
    integerList.removeAt(1)
    pl(integerList)
}